package cl.vixionarios.biotika.servicio;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Response.ResponseBuilder;

import org.apache.velocity.runtime.directive.Parse;

import cl.vixionarios.biotika.dao.to.BioequivalenteTO;
import cl.vixionarios.biotika.dao.to.ComentarioBioequivalenteTO;
import cl.vixionarios.biotika.enums.EnumMensajesError;
import cl.vixionarios.biotika.json.Mensaje;
import cl.vixionarios.biotika.services.BioequivalenteService;
import cl.vixionarios.biotika.services.ComentarioService;

@Path("/bioequivalencia")
public class RestBioequivalente {
	
	private final Mensaje errorObtenerMenuP=EnumMensajesError.RECURSO_OBTENER_FORMULARIO;
	
	@GET
	@Path("/obtener")
	@Produces("application/json; charset=UTF-8")
	public Response obtenerBioequivalentes(@Context UriInfo info, @Context HttpServletRequest request)
	{
		ResponseBuilder builder = null;
		String nombre = request.getParameter("nombre");
		List<BioequivalenteTO> bioequivalentes = new ArrayList<BioequivalenteTO>();
		BioequivalenteService bioequivalentesService = new BioequivalenteService();
		bioequivalentes = bioequivalentesService.obtenerBioequivalentes(nombre);
		
		if(bioequivalentes.size() > 0)
		{
			builder = Response.ok(bioequivalentes);
		}
		else
		{
			cl.vixionarios.biotika.json.Error errorJson= new cl.vixionarios.biotika.json.Error(errorObtenerMenuP);
			errorJson.setRequest(info.getPath()+"?"+info.getRequestUri().getQuery());

			builder = Response.status(errorObtenerMenuP.getStatus());
			builder.entity(errorJson);
		}
			
		return builder.build();
	}
	
	@GET
	@Path("/obtenerComentarios")
	@Produces("application/json; charset=UTF-8")
	public Response obtenerComentarios(@Context UriInfo info, @Context HttpServletRequest request)
	{
		ResponseBuilder builder = null;
		String idBioequivalente = request.getParameter("idBioequivalente");
		List<ComentarioBioequivalenteTO> comentariosBioequivalente = new ArrayList<ComentarioBioequivalenteTO>();
		ComentarioService comentariosService = new ComentarioService();
		comentariosBioequivalente = comentariosService.obtenerComentariosBioequivalente(idBioequivalente);
		
		if(comentariosBioequivalente.size() > 0)
		{
			builder = Response.ok(comentariosBioequivalente);
		}
		else
		{
			cl.vixionarios.biotika.json.Error errorJson= new cl.vixionarios.biotika.json.Error(errorObtenerMenuP);
			errorJson.setRequest(info.getPath()+"?"+info.getRequestUri().getQuery());

			builder = Response.status(errorObtenerMenuP.getStatus());
			builder.entity(errorJson);
		}
			
		return builder.build();
	}
	
	@GET
	@Path("/obtenerUltimoComentario")
	@Produces("application/json; charset=UTF-8")
	public Response obtenerUltimoComentario(@Context UriInfo info, @Context HttpServletRequest request)
	{
		ResponseBuilder builder = null;
		String idBioequivalente = request.getParameter("idBioequivalente");
		ComentarioBioequivalenteTO comentarioBioequivalente = new ComentarioBioequivalenteTO();
		ComentarioService comentariosService = new ComentarioService();
		comentarioBioequivalente = comentariosService.obtenerComentarioBioequivalente(idBioequivalente);
		
		if(comentarioBioequivalente != null)
		{
			builder = Response.ok(comentarioBioequivalente);
		}
		else
		{
			cl.vixionarios.biotika.json.Error errorJson= new cl.vixionarios.biotika.json.Error(errorObtenerMenuP);
			errorJson.setRequest(info.getPath()+"?"+info.getRequestUri().getQuery());

			builder = Response.status(errorObtenerMenuP.getStatus());
			builder.entity(errorJson);
		}
			
		return builder.build();
	}
	
	@GET
	@Path("/agregarComentario")
	@Produces("application/json; charset=UTF-8")
	public Response agregarComentario(@Context UriInfo info, @Context HttpServletRequest request)
	{
		ResponseBuilder builder = null;
		String idBioequivalente = request.getParameter("idBioequivalente");
		String descripcion = request.getParameter("descripcion");
		String nombreUsuario = request.getParameter("nombreUsuario");
		String valor = request.getParameter("precio");
		int precio = Integer.parseInt(valor);
		String disponible ="TRUE";// request.getParameter("disponible");
		Boolean estaDisponible = new Boolean(disponible.toLowerCase());		
		ComentarioService comentariosService = new ComentarioService();
		ComentarioBioequivalenteTO comentario = new ComentarioBioequivalenteTO();
		comentario.setDescripcion(descripcion);
		comentario.setUsuario(nombreUsuario);
		comentario.setPrecio(precio);
		comentario.setDisponible(estaDisponible);
		comentario.setIdBioequivalente(idBioequivalente);
		int resp = comentariosService.agregarComentarioBioequivalente(comentario);
		
		if(resp > 0)
		{
			builder = Response.ok();
		}
		else
		{
			cl.vixionarios.biotika.json.Error errorJson= new cl.vixionarios.biotika.json.Error(errorObtenerMenuP);
			errorJson.setRequest(info.getPath()+"?"+info.getRequestUri().getQuery());

			builder = Response.status(errorObtenerMenuP.getStatus());
			builder.entity(errorJson);
		}
			
		return builder.build();
	}

}
